The Design and Implementation of the SELF Compiler, an Optimizing Compilet for Object-Oriented Programming Languages
نویسنده
چکیده
data types [LZ74, LSAS77, LAB+81, LG86] provide a more expressive mechanism for describing and manipulating data structures. An abstract data type abstracts away from a concrete data type by providing a set of operations (the interface) through which clients are to manipulate objects of the type. The abstract data type is implemented in terms of some lower-level data type (the representation), but this implementation is hidden from clients behind the abstract data type’s abstraction boundary. For example, a canonical abstract data type is the stack data type, supporting create, push, pop, top, and isEmpty operations and represented using an array of stack elements and an integer top-of-stack index. The enforced abstraction boundary provides advantages to both implementors and clients of abstract data types over traditional concrete data types. Implementors are free to change the representation of an abstract data type, and as long as the interface remains the same, clients of the abstract data type remain unaffected. For example, the stack data type could be reimplemented using a linked list in place of an array and an integer, and clients would be unaffected. Thus, abstract data types encapsulate design decisions that may change, especially those about the representation of critical data structures. For clients, abstract data types provide a more natural interface for manipulating data structures than the language primitives used with concrete data structures. The operations on abstract data types can directly reflect the conceptual operations on the data type the programmer has in mind, rather than being translated into series of extraction and indexing operations. In the stack example, clients may use the more natural push and pop operations in place of array indexes and integer increments. These abstract operations also improve the reliability of the system, since adding a stack abstract data type
منابع مشابه
Declarative Semantics in Object-Oriented Software Development - A Taxonomy and Survey
One of the modern paradigms to develop an application is object oriented analysis and design. In this paradigm, there are several objects and each object plays some specific roles in applications. In an application, we must distinguish between procedural semantics and declarative semantics for their implementation in a specific programming language. For the procedural semantics, we can write a ...
متن کاملCompiling Java to SUIF: Incorporating Support for Object-Oriented Languages
A primary objective in the SUIF compiler design has been to develop an infrastructure for research in a variety of compiler topics including optimizations on object-oriented languages. However, the task of optimizing object-oriented languages requires that high-level object constructs be visible in SUIF. Java is a statically-typed, object-oriented and interpreted language that has the same requ...
متن کاملApplying Object-orientation and Aspect-orientation in Teaching Domain-specific Language Implementation*
In traditional compiler design and programming language courses, the complexity required for a successful implementation of the course project is often a major obstacle for many students. This is especially true for courses focused on the design and implementation of domain-specific languages, where the language evolves constantly. This paper describes an approach that allows students to modula...
متن کاملAn Object-Oriented Approach to C++ Compiler Technology
This paper focuses on the use of object-oriented approaches to syntactical and semantical analysis for complex object-oriented languages like C++. We are interested in these issues both from a design and implementation point of view. We implement a semantic analyzer in an object-oriented manner, using the C++ programming language. We base our approach on design patterns in order to improve the ...
متن کاملProducing Network Applications Using Object-Oriented Petri Nets
The programming language Java has become and extremely popular language; many people are writing concurrent systems using Java. The design and implementation of concurrent Java programs is significantly more complex than sequential programs and the use formal method is seen as extremely beneficial for the design and implementation of such systems. The Petri net formalism [Petri 1962] can be use...
متن کاملSynergies Between Object-Oriented Programming Language Design and Implementation Research
By pursuing language design and language implementation research in parallel, interactions between the two research areas can be exploited to make faster, better progress in both. We report on our experiences working on the Cecil language design project and the Vortex optimizing compiler project, highlighting how each project has encouraged and challenged the other.
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1992